package fr.thelem.gestiondemandesthelem.dao.model;

import static javax.persistence.CascadeType.PERSIST;
import static javax.persistence.CascadeType.REMOVE;
import static javax.persistence.GenerationType.AUTO;

import java.io.Serializable;
import java.util.Collection;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

/**
 * Entité sous catégorie: Représente la sous catégorie d'une catégorie
 */
@Entity
@Table(name = "SOUS_CATEGORIE", uniqueConstraints = {@UniqueConstraint(columnNames = {"NOM_SOUS_CATEGORIE", "IDENTIFIANT_CATEGORIE"})})
public class SousCategorieEntity implements Serializable {
    /** Attribut serialVersionUID */
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "IDENTIFIANT_SOUS_CATEGORIE")
    @GeneratedValue(strategy = AUTO)
    private int identifiantSousCategorie;

    @Column(name = "NOM_SOUS_CATEGORIE")
    private String nomSousCategorie;

    @ManyToOne
    @JoinColumn(name = "IDENTIFIANT_CATEGORIE")
    private CategorieEntity categorieSousCategorie;

    @OneToMany(cascade = {PERSIST, REMOVE}, mappedBy = "sousCategorieCDDemande")
    private Collection<CDDemandeEntity> CDDemandeSousCategorie;

    /**
     * Accesseur de identifiantSousCategorie
     * 
     * @return le identifiantSousCategorie
     */
    public int getIdentifiantSousCategorie() {
        return identifiantSousCategorie;
    }

    /**
     * Affectation de identifiantSousCategorie
     * 
     * @param identifiantSousCategorie identifiantSousCategorie à affecter
     */
    public void setIdentifiantSousCategorie(int identifiantSousCategorie) {
        this.identifiantSousCategorie = identifiantSousCategorie;
    }

    /**
     * Accesseur de nomSousCategorie
     * 
     * @return le nomSousCategorie
     */
    public String getNomSousCategorie() {
        return nomSousCategorie;
    }

    /**
     * Affectation de nomSousCategorie
     * 
     * @param nomSousCategorie nomSousCategorie à affecter
     */
    public void setNomSousCategorie(String nomSousCategorie) {
        this.nomSousCategorie = nomSousCategorie;
    }

    /**
     * Accesseur de categorieSousCategorie
     * 
     * @return le categorieSousCategorie
     */
    public CategorieEntity getCategorieSousCategorie() {
        return categorieSousCategorie;
    }

    /**
     * Affectation de categorieSousCategorie
     * 
     * @param categorieSousCategorie categorieSousCategorie à affecter
     */
    public void setCategorieSousCategorie(CategorieEntity categorieSousCategorie) {
        this.categorieSousCategorie = categorieSousCategorie;
    }

    /**
     * Accesseur de cDDemandeSousCategorie
     * 
     * @return le cDDemandeSousCategorie
     */
    public Collection<CDDemandeEntity> getCDDemandeSousCategorie() {
        return CDDemandeSousCategorie;
    }

    /**
     * Affectation de cDDemandeSousCategorie
     * 
     * @param cDDemandeSousCategorie cDDemandeSousCategorie à affecter
     */
    public void setCDDemandeSousCategorie(Collection<CDDemandeEntity> cDDemandeSousCategorie) {
        CDDemandeSousCategorie = cDDemandeSousCategorie;
    }

}
